"""
07-Socket服务端开发

socket（简称 套接字）是进程之间通信一个工具，好比现实生活中的插座，所有的家用电器要想工作都是基于插座进行，进程之间想要进行网络通信需要socket。
Socket负责进程之间的网络数据传输，好比数据的搬运工。



调试：




"""
import socket

print("============================ 演示Socket服务端开发")

# 创建socket对象
socket_server = socket.socket()

# 绑定IP地址和端口
socket_server.bind(('127.0.0.1', 9009))

# 监听端口
socket_server.listen(1)  # 接收整数参数，表示同时能处理多少个客户端连接

# 等待客户端连接，accept方法返回的是二元元組（链接对象 容户端地址信息)
conn, address = socket_server.accept()
print(f"接收到了客户端的链接，客户端的信息是：{address}")

while True:
    # 接收客户端连接，要使用客户端和服务端的本次链接村象，而非socket_server对象
    data: str = conn.recv(1024).decode("utf-8")
    print(f"客户端发送的数据是：{data}")
    # 发送回复消息
    msg = input("请输入你要回复给客户端的消息：")
    if msg == "exit":
        break
    conn.send(msg.encode("utf-8"))  # encode 可以将字符中编码为字节数组对象

# 关闭连接
conn.close()
socket_server.close()
